package com.chagee.store.operation.server.feign.vo;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;

/**
 * @Author : hk
 * @Date : 2025/3/17
 */

public class User implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;

	/**
	 * 用户编号
	 */
	private String code;
	/**
	 * 用户平台
	 */
	private Integer userType;
	/**
	 * 账号
	 */
	private String account;
	/**
	 * 密码
	 */
	private String password;
	/**
	 * 昵称
	 */
	private String name;
	/**
	 * 真名
	 */
	private String realName;
	/**
	 * 头像
	 */
	private String avatar;
	/**
	 * 邮箱
	 */
	private String email;
	/**
	 * 手机
	 */
//  @Pattern(regexp = "(^(?:0|86|\\+86)?\\s*1[3-9]\\d{9}$)|(^(?:\\+852|00852)?\\s*[56789]\\d{7}$)|(^(?:\\+853|00853)?\\s*6\\d{7}$)|(^(?:\\+65|0065)?\\s*[89]\\d{7}$)|(^(?:\\+60|0060|0)?\\s*1[0-9]{1,2}\\d{7}$)", message = "{user.00000206}")
	private String phone;

	/**
	 * 飞书用户id
	 */
	private String feishuUserId;
	/**
	 * 生日
	 */
	private Date birthday;
	/**
	 * 性别
	 */
	private Integer sex;
	/**
	 * 状态
	 */
	private Integer status;
	/**
	 * 角色id
	 */
	private String roleId;
	/**
	 * officeId
	 */
	private String officeId;
	/**
	 * 部门id
	 */
	private String deptId;
	/**
	 * groupid
	 */
	private String groupId;
	/**
	 * 岗位id
	 */
	private Long postId;

	/**
	 * 岗位系数
	 */
	private BigDecimal postRatio;

	/**
	 * 门店ID List
	 */
	private String storeIds;

	/**
	 * 最后登录ip
	 */
	private String lastIp;



	/**
	 * 岗位名称
	 */
	private String postName;
	/**
	 * 岗位编码
	 */
	private String postCode;

	/**
	 * 部门组织Id，按层级拼接
	 */
	private String orgIdList;

	/**
	 * 入职日期
	 */
	private LocalDate hireDate;

	/**
	 * 身份证号
	 */
	private String idCard;
	/**
	 * 身份证号反面
	 */
	private String idCardBackUrl;
	/**
	 * 身份证号正面
	 */
	private String idCardFrontUrl;
	/**
	 * 健康证正面
	 */
	private String healthCardFrontUrl;
	/**
	 * 健康证开始时间
	 */
	private LocalDate healthCardStartTime;
	/**
	 * 健康证结束时间
	 */
	private LocalDate healthCardEndTime;

	/**
	 * 入职保底工资
	 */
	private BigDecimal floorWage;
	/**
	 * 保底工资截止时间
	 */
	private LocalDate floorWageEndTime;

	/**
	 * 门店跟随类型：1.开店教练 2.营运教练 3.营运专员
	 */
	private String followType;

	/**
	 * 参与排班类型: 1.参与排班  2.不参与排班(类型为公司用户生效)
	 */
	private Integer scheduleType;

	/**
	 * 语言（国际化配置)
	 */
	private String languageCode;

	/**
	 * 手机区号
	 */
	private String areaCode;

	/**
	 * 证件类型
	 */
	private String idCardType;
	/**
	 * 个人照片
	 */
	private String personPhoto;
	/**
	 * 在职类型：1正式 2兼职 3茶生（仅付款）
	 */
	private Integer personType;
	/**
	 * 时薪
	 */
	private BigDecimal hourWage;

	public User() {
	}

	public User(Long id, String code, Integer userType, String account, String password, String name, String realName, String avatar, String email, String phone, String feishuUserId, Date birthday, Integer sex, Integer status, String roleId, String officeId, String deptId, String groupId, Long postId, BigDecimal postRatio, String storeIds, String lastIp, String postName, String postCode, String orgIdList, LocalDate hireDate, String idCard, String idCardBackUrl, String idCardFrontUrl, String healthCardFrontUrl, LocalDate healthCardStartTime, LocalDate healthCardEndTime, BigDecimal floorWage, LocalDate floorWageEndTime, String followType, Integer scheduleType, String languageCode, String areaCode, String idCardType, String personPhoto, Integer personType, BigDecimal hourWage) {
		this.id = id;
		this.code = code;
		this.userType = userType;
		this.account = account;
		this.password = password;
		this.name = name;
		this.realName = realName;
		this.avatar = avatar;
		this.email = email;
		this.phone = phone;
		this.feishuUserId = feishuUserId;
		this.birthday = birthday;
		this.sex = sex;
		this.status = status;
		this.roleId = roleId;
		this.officeId = officeId;
		this.deptId = deptId;
		this.groupId = groupId;
		this.postId = postId;
		this.postRatio = postRatio;
		this.storeIds = storeIds;
		this.lastIp = lastIp;
		this.postName = postName;
		this.postCode = postCode;
		this.orgIdList = orgIdList;
		this.hireDate = hireDate;
		this.idCard = idCard;
		this.idCardBackUrl = idCardBackUrl;
		this.idCardFrontUrl = idCardFrontUrl;
		this.healthCardFrontUrl = healthCardFrontUrl;
		this.healthCardStartTime = healthCardStartTime;
		this.healthCardEndTime = healthCardEndTime;
		this.floorWage = floorWage;
		this.floorWageEndTime = floorWageEndTime;
		this.followType = followType;
		this.scheduleType = scheduleType;
		this.languageCode = languageCode;
		this.areaCode = areaCode;
		this.idCardType = idCardType;
		this.personPhoto = personPhoto;
		this.personType = personType;
		this.hourWage = hourWage;
	}

	public static long getSerialVersionUID() {
		return serialVersionUID;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public Integer getUserType() {
		return userType;
	}

	public void setUserType(Integer userType) {
		this.userType = userType;
	}

	public String getAccount() {
		return account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getRealName() {
		return realName;
	}

	public void setRealName(String realName) {
		this.realName = realName;
	}

	public String getAvatar() {
		return avatar;
	}

	public void setAvatar(String avatar) {
		this.avatar = avatar;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getFeishuUserId() {
		return feishuUserId;
	}

	public void setFeishuUserId(String feishuUserId) {
		this.feishuUserId = feishuUserId;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public Integer getSex() {
		return sex;
	}

	public void setSex(Integer sex) {
		this.sex = sex;
	}

	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	public String getRoleId() {
		return roleId;
	}

	public void setRoleId(String roleId) {
		this.roleId = roleId;
	}

	public String getOfficeId() {
		return officeId;
	}

	public void setOfficeId(String officeId) {
		this.officeId = officeId;
	}

	public String getDeptId() {
		return deptId;
	}

	public void setDeptId(String deptId) {
		this.deptId = deptId;
	}

	public String getGroupId() {
		return groupId;
	}

	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	public Long getPostId() {
		return postId;
	}

	public void setPostId(Long postId) {
		this.postId = postId;
	}

	public BigDecimal getPostRatio() {
		return postRatio;
	}

	public void setPostRatio(BigDecimal postRatio) {
		this.postRatio = postRatio;
	}

	public String getStoreIds() {
		return storeIds;
	}

	public void setStoreIds(String storeIds) {
		this.storeIds = storeIds;
	}

	public String getLastIp() {
		return lastIp;
	}

	public void setLastIp(String lastIp) {
		this.lastIp = lastIp;
	}

	public String getPostName() {
		return postName;
	}

	public void setPostName(String postName) {
		this.postName = postName;
	}

	public String getPostCode() {
		return postCode;
	}

	public void setPostCode(String postCode) {
		this.postCode = postCode;
	}

	public String getOrgIdList() {
		return orgIdList;
	}

	public void setOrgIdList(String orgIdList) {
		this.orgIdList = orgIdList;
	}

	public LocalDate getHireDate() {
		return hireDate;
	}

	public void setHireDate(LocalDate hireDate) {
		this.hireDate = hireDate;
	}

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}

	public String getIdCardBackUrl() {
		return idCardBackUrl;
	}

	public void setIdCardBackUrl(String idCardBackUrl) {
		this.idCardBackUrl = idCardBackUrl;
	}

	public String getIdCardFrontUrl() {
		return idCardFrontUrl;
	}

	public void setIdCardFrontUrl(String idCardFrontUrl) {
		this.idCardFrontUrl = idCardFrontUrl;
	}

	public String getHealthCardFrontUrl() {
		return healthCardFrontUrl;
	}

	public void setHealthCardFrontUrl(String healthCardFrontUrl) {
		this.healthCardFrontUrl = healthCardFrontUrl;
	}

	public LocalDate getHealthCardStartTime() {
		return healthCardStartTime;
	}

	public void setHealthCardStartTime(LocalDate healthCardStartTime) {
		this.healthCardStartTime = healthCardStartTime;
	}

	public LocalDate getHealthCardEndTime() {
		return healthCardEndTime;
	}

	public void setHealthCardEndTime(LocalDate healthCardEndTime) {
		this.healthCardEndTime = healthCardEndTime;
	}

	public BigDecimal getFloorWage() {
		return floorWage;
	}

	public void setFloorWage(BigDecimal floorWage) {
		this.floorWage = floorWage;
	}

	public LocalDate getFloorWageEndTime() {
		return floorWageEndTime;
	}

	public void setFloorWageEndTime(LocalDate floorWageEndTime) {
		this.floorWageEndTime = floorWageEndTime;
	}

	public String getFollowType() {
		return followType;
	}

	public void setFollowType(String followType) {
		this.followType = followType;
	}

	public Integer getScheduleType() {
		return scheduleType;
	}

	public void setScheduleType(Integer scheduleType) {
		this.scheduleType = scheduleType;
	}

	public String getLanguageCode() {
		return languageCode;
	}

	public void setLanguageCode(String languageCode) {
		this.languageCode = languageCode;
	}

	public String getAreaCode() {
		return areaCode;
	}

	public void setAreaCode(String areaCode) {
		this.areaCode = areaCode;
	}

	public String getIdCardType() {
		return idCardType;
	}

	public void setIdCardType(String idCardType) {
		this.idCardType = idCardType;
	}

	public String getPersonPhoto() {
		return personPhoto;
	}

	public void setPersonPhoto(String personPhoto) {
		this.personPhoto = personPhoto;
	}

	public Integer getPersonType() {
		return personType;
	}

	public void setPersonType(Integer personType) {
		this.personType = personType;
	}

	public BigDecimal getHourWage() {
		return hourWage;
	}

	public void setHourWage(BigDecimal hourWage) {
		this.hourWage = hourWage;
	}
}
